package com.eastfair.imaster.service;

import com.eastfair.annotation.base.SubjectTypeEnum;
import com.eastfair.boot.service.SuperService;
import com.eastfair.imaster.dto.CollectionDTO;
import com.eastfair.imaster.entity.Collection;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 业务接口
 * 收藏表
 * </p>
 *
 * @author liuxiaobai
 * @date 2021-08-31
 */
public interface CollectionService extends SuperService<Collection> {

    /**
     * 收藏
     * 未收藏时添加收藏记录，已收藏时取消收藏
     * @param collectionDTO subjectType、subjectId
     * @return 成功true 失败false
     */
    void saveCollection(CollectionDTO collectionDTO);

    /**
     * 校验有没有收藏过
     * @param subjectType 内容类型
     * @param subjectId 内容ID
     * @return 已收藏-收藏ID/未收藏-null
     */
    Long check(SubjectTypeEnum subjectType,Long subjectId);

    /**
     * 校验有没有收藏过 并返回收藏数
     * @param subjectType 内容类型
     * @param subjectId 内容ID
     * @return collectionDTO{isCollect,num}
     */
    CollectionDTO checkWithNum(SubjectTypeEnum subjectType,Long subjectId);

    /**
     * 批量校验是否收藏过
     * @param subjectType 内容类型
     * @param subjectIds 内容ID集合
     * @return 已被收藏的ID集合
     */
    Set<Long> checkBatch(SubjectTypeEnum subjectType, List<Long> subjectIds);

    /**
     * 批量校验是否收藏过 并返回收藏数
     * @param subjectType 内容类型
     * @param subjectIds 内容ID集合
     * @return key-subjectId value-collectionDTO{isCollect,num}
     */
    Map<Long,CollectionDTO> checkBatchWithNum(SubjectTypeEnum subjectType, List<Long> subjectIds);
}
